package com.uc3m.dsic.gestorZoo;

/**
 * En la clase Horario vienen dados los atributos: fecha, tipoComida y animal
 *
 * @author Rafael Galvez Sanchez
 * @version 1.0
 */
public class Horario {

    /**
     * Atributo1: fecha del horario.
     */
    public String fecha;
    /**
     * Atributo2: tipo de comida que se le entrega al animal.
     */
    public String tipoComida;
    /**
     * Atributo3: animal al que pertenece el horario.
     */
    public String animal;
    /**
     * Atributo3: especie del animal al que pertenece el horario.
     */
    public String especie;

    /**
     * Constructor para crear un nuevo horario dados los atributos.
     *
     * @param f	
     *          fecha del horario.
     * @param tc
     *          tipo de comida que se entrega al animal.
     * @param a	
     *          animal al que pertenece el horario.
     * @throws ZooException
     * @throws Exception
     */
    Horario(String f, String tc, String a, String e)
            throws ZooException, Exception {
        GestorAnimal gAnimal = new GestorAnimal();
        Animal ani = gAnimal.getAnimalbyId(a, e);
        try{
            int horas = new Integer(f.split(":")[0]);
            int min = new Integer(f.split(":")[1]);
            if (!f.contains("'") && !tc.contains("'") && !a.contains("'")
                    && !e.contains("'")){
                if(horas <= 24 && horas >= 0 && min <= 59 && min >= 0){
                    if(ani != null){
                        fecha = f;
                        tipoComida = tc;
                        animal = a;
                        especie = e;
                    } else {
                        throw new ZooException("No existe el animal asociado al " 
                                + "horario.\nPor favor introduza la clave de"
                                + " una animal que exista");
                    }
                }else{
                    throw new ZooException("La fecha tiene que tener valore de "
                            + "horas y minutos validos"
                            + ".\nPor favor introduza datos correctos");
                }
            } else {
                throw new ZooException ("No se admite el caracter '. "
                        + "Por favor, modifiquelo");
            }
        }catch(NumberFormatException ex){
            throw new ZooException("La fecha debe tener valores numéricos."
                    + "\n Por favor, introduza datos correctos.");
        }
    }

    /**
     * Metodo al que se llama para obtener la fecha.
     *
     * @return fecha Fecha del horario
     */
    public String getFecha() {
        return fecha;
    }

    /**
     * Metodo para asignar la fecha.
     *
     * @param f Fecha del horario
     */
    public void setFecha(String f) {
        fecha = f;
    }

    /**
     * Metodo al que se llama para obtener el tipo de comida.
     *
     * @return tipoComida Tipo de comida que se entrega al animal
     */
    public String getTipoComida() {
        return tipoComida;
    }

    /**
     * Metodo para asignar el tipo de comida.
     *
     * @param tc Tipo de comida que se entrega al animal
     */
    public void setTipoComida(String tc) {
        tipoComida = tc;
    }

    /**
     * Metodo al que se llama para obtener el animal.
     *
     * @return animal Animal al que pertenece el horario
     */
    public String getAnimal() {
        return animal;
    }

    /**
     * Metodo para asignar el animal.
     *
     * @param a Animal al que pertenece el horario
     */
    public void setAnimal(String a) {
        animal = a;
    }

    /**
     * Metodo al que se llama para obtener la especie.
     *
     * @return especie Especie del animal al que pertenece el horario
     */
    public String getEspecie() {
        return especie;
    }

    /**
     * Metodo para asignar la especie.
     *
     * @param e
     *          Especie del animal al que pertenece el horario
     */
    public void setEspecie(String e) {
        especie = e;
    }

    /**
     * Inserción de horarios en la base de datos
     *
     * @throws Exception
     */
    public void insertarHorario() throws Exception {
        GestorZooInterface izoo = new GestorZooAplicacion();
        String inserta = "INSERT INTO HORARIO VALUES";
        String parametros[] = {fecha.trim().toUpperCase(),
                animal.trim().toUpperCase(), especie.trim().toUpperCase(),
                tipoComida.trim().toUpperCase()};
        izoo.actualiza(inserta, parametros);
        izoo.cerrarBD();
    }

    /**
     * Borrado de un horario de la base de datos a partir del identificador de
     * la fecha, el nombre del animal y la especie.
     * 
     * @throws Exception
     */
    public void borrarHorario() throws Exception {
        GestorZooInterface izoo = new GestorZooAplicacion();
        izoo.actualiza("DELETE FROM HORARIO WHERE Nombre = '" 
                + animal.trim().toUpperCase() + "' AND Especie = '"
                + especie.trim().toUpperCase() + "' AND FECHA = '"
                + fecha.trim().toUpperCase() + "';");
        izoo.cerrarBD();
    }
}
